#ifndef GLOBAL_H
#define GLOBAL_H

#include <vector>
#include <string>
#include <ctime>
#include <QString>

/**
 * 全局头文件
 */

// 事件类型枚举
enum EventType{
    DANGER_PAGE = 1,   // 加载的是不安全的网页
    RECEIVE_NOTIFY = 2 // 收到通知事件（用于浏览器消息提示)
};

// 可变类型变量
struct Variant{

};

// 事件结构体基类
struct Event{
    int code;   // 事件码,对应事件类型
    std::vector<Variant> args;      // 容器存放参数
};

// 账户信息结构体
struct AccountInfo{
    std::string host;           // 域名
    std::string username;       // 用户名
    std::string password;       // 存储的是加密后的信息，进行base64编码
    AccountInfo(){}
    AccountInfo(std::string _host, std::string _username, std::string _password){
        host = _host;
        username = _username;
        password = _password;
    }

    // 重载比较运算符号
    bool operator == (const AccountInfo &other){
        if(host == other.host && username == other.username)return true;
        return false;
    }
};

//static int faviroteId = 0;  // 收藏夹id记录器
//static int historyId = 0;   // 历史记录id记录器

// 访问历史信息结构体（收藏夹和历史记录均使用这个结构）
struct UrlInfo{
    unsigned int id;    // 优化查找算法时使用
    std::string name;   // 名称
    std::string tag;    // 标签
    std::string url;    // 网址
    std::time_t t;   // 记录时间, 默认值time(0),当前系统时间
    UrlInfo(){}
    UrlInfo(std::string name, std::string tag, std::string url){
        this->name = name;
        this->tag = tag;
        this->url = url;
        this->t = time(0);
//        this->id = ++faviroteId;
    }
};

/**
 * 插件结构
 */

struct PluginInfo{
    QString name;           // 插件名
    QString description;    // 描述信息
    QString code;           // 插件代码（进行代码压缩，去空格）
    QString author;         // 插件作者
    QString version;        // 插件版本
    QString filePath;       // 插件文件夹路径
};

/**
 * 主题,目前仅支持的是切换背景图片
 */
struct Theme{
    QString name;
    QString backgroundPath;    // 背景图片
};

#endif // GLOBAL_H
